//Copyright (c) 2006-2007 Microsoft Corporation.  All rights reserved
using System;
using System.Xml;

namespace InvocationFramework.Adapters.Pipeline
{
    /// <summary>
    /// Interfaz para implementar un filtro para un pipeline
    /// </summary>
    /// <author>Rodolfo Finochietti 11/10/2005 15.20</author>
    public interface IFilter
    {
        /// <summary>
        /// Inicializa el filtro
        /// </summary>
        /// <param name="configuration">Configuracion del filtro</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Design", "CA1059:MembersShouldNotExposeCertainConcreteTypes" )]
        void Init( XmlNode configuration );

        /// <summary>
        /// Permite implementar la logica de ejecucion del filtro
        /// </summary>
        /// <param name="state">Estado del pipeline</param>
        /// <returns>Resultado de la ejecucion del filtro</returns>
        FilterResult Process( PipelineState state ); 
    }
}